package cutil

import (
	"bufio"
	"io"
	"os"
)

/**
 * 判断文件是否存在  存在返回 true 不存在返回false
 */
func CheckFileIsExist(filename string) bool {
	var exist = true
	//fmt.Println("isexist"+filename)
	if _, err := os.Lstat(filename); os.IsNotExist(err) {
		exist = false
	}
	return exist
}

/**
逐行读取内容，hookfn 是处理的回调函数
*/
func ReadLine(filePth string, hookfn func([]byte), row int) error {
	f, err := os.Open(filePth)
	if err != nil {
		return err
	}
	defer f.Close()

	bfRd := bufio.NewReader(f)
	count := 0
	for {
		if row > 0 {
			count++
			if count > row {
				break
			}
		}
		line, err := bfRd.ReadBytes('\n')
		hookfn(line)    //放在错误处理前面，即使发生错误，也会处理已经读取到的数据。
		if err != nil { //遇到任何错误立即返回，并忽略 EOF 错误信息
			if err == io.EOF {
				return nil
			}
			return err
		}
	}
	return nil
}
